"use strict";
var oib;
(function (oib) {
    let obj;
    obj = true;
    obj = "hi";
    obj = 1;
    obj = { foo: 123 };
    obj = [1, 2];
    obj = (a) => a + 1;
    // 上面示例中，变量obj的类型是空对象{}，就代表Object类型。
    // 显然，无所不包的Object类型既不符合直觉，也不方便使用。
    // 大写的Object类型代表 JavaScript 语言里面的广义对象。所有可以转成对象的值，都是Object类型，这囊括了几乎所有的值。
    // 上面示例中，undefined和null赋值给Object类型，就会报错。
    // 另外，空对象{}是Object类型的简写形式，所以使用Object时常常用空对象代替。
    let obje;
    obje = true;
    obje = "hi";
    obje = 1;
    obje = { foo: 123 };
    obje = [1, 2];
    obje = (a) => a + 1;
    // obj = undefined; // 报错
    // obj = null; // 报错
    // 但是如果指定为小写的object就只能赋值 数组对象函数
    let objee;
    // objee=true  错
    // objee="hi" 错
    objee = [1];
    objee = function () {
    };
    objee = {};
})(oib || (oib = {}));
// 类型	             含义                                                             是否推荐	  举例
// object（小写）	所有非原始类型（非 number/string/boolean/null/undefined/symbol/bigint）	✅ 推荐	 {}, [], function() {}
// Object（大写）	JavaScript 中的构造函数 Object 的类型，允许原始类型被包装（不安全）	       ❌ 不推荐	"hello", 42, true 都可以赋给它
